const mongoose = require('mongoose');
const config = require('../config')
var options = {
    /**
     * 解决提示
     */
    useNewUrlParser: true,
    /**
     *
     * mongoose特有的缓存机制:
     * 如果你希望链接错误时终止数据库操作，请将此选项设为 0 以及把bufferCommands设为false
     *
     */
    bufferCommands: false,
    bufferMaxEntries: 0,
    /**
     * 用户名
     */
    // user:"root",
    /**
     * 密码
     */
    //pass:"123456",
    /**
     *
     *  默认情况下，mongoose 在连接时会自动建立 schema 的索引。这有利于开发，但是在大型生产环境下不是十分理想，因为索引建立会导致性能下降。如果 autoIndex 设为 false，mongoose 将不会自动建立索引
     *
     */
    autoIndex: false,
    /**
     * 数据库名称：覆盖连接字符串
     */
    dbName: "douyin",
    /**
     * 底层 MongoDB 驱动在连接丢失后将自动重连。除非你是可以自己管理连接池的高手，否则不要把这个选项设为 false
     */
    autoReconnect: true,
    /**
     *
     *If you're connected to a single server or mongos proxy (as opposed to a replica set), the MongoDB driver will try to reconnect every reconnectInterval milliseconds for reconnectTries times, and give up afterward. When the driver gives up, the mongoose connection emits a reconnectFailed event. This option does nothing for replica set connections.
     *
     */
    reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect
    reconnectInterval: 500, // Reconnect every 500ms
    /**
     *  MongoDB 保持的最大 socket 连接数。 poolSize 的默认值是 5。注意，MongoDB 3.4 之前， MongoDB 只允许每个 socket 同时进行一个操作，所以如果你有几个缓慢请求卡着后面快的请求，可以尝试增加连接数。
     */
    poolSize: 10,

    /**
     *
     * 对于长期运行的后台应用，启用毫秒级 keepAlive 是一个精明的操作。不这么做你可能会经常 收到看似毫无原因的 "connection closed" 错误。
     *
     */
    keepAlive: 120,
}

let dburl = ''
const node_env = process.env.NODE_ENV || 'development';
if (node_env == 'development') {
    dburl = 'mongodb://' + config.mongodb.host + ":" + config.mongodb.port
} else if (node_env == 'production') {
    dburl = 'mongodb://mongouser:Sharing2@' + config.mongodb.host + ":" + config.mongodb.port
    options.auth = { authSource: 'admin' }
        // options = {auth:{authSource : 'admin'}  }
}
console.log(dburl, options)

mongoose.connect(dburl, options);

const db = mongoose.connection

db.on('error', () => {
    console.log("mongodb error happened")
});
db.once('open', function() {
    console.log(" we're connected!")
});
module.exports = mongoose